Line data Source code
1 : #include "NavigationController.hpp"
2 : #include "IDriveMotor.hpp"
3 :
4 78 : NavigationController::NavigationController(IDriveMotor& motor)
5 117 : : motor_(motor) {}
6 :
7 47 : void NavigationController::moveForward() {
8 47 : if (motorState_ == MotorState::FORWARD) return;
9 47 : motor_.moveForward();
10 47 : motorState_ = MotorState::FORWARD;
11 47 : }
12 :
13 13 : void NavigationController::moveBackward() {
14 13 : if (motorState_ == MotorState::BACKWARD) return;
15 13 : motor_.moveBackward();
16 13 : motorState_ = MotorState::BACKWARD;
17 13 : }
18 :
19 31 : void NavigationController::stop() {
20 31 : if (motorState_ == MotorState::STOPPED) return;
21 31 : motor_.stop();
22 31 : motorState_ = MotorState::STOPPED;
23 31 : }
24 :
25 16 : void NavigationController::turn(Direction direction) {
26 16 : MotorState target = (direction == Direction::LEFT) ? MotorState::LEFT : MotorState::RIGHT;
27 16 : if (motorState_ == target) return;
28 16 : if (motorState_ == MotorState::FORWARD || motorState_ == MotorState::BACKWARD) return;
29 16 : motor_.turn(direction);
30 16 : motorState_ = target;
31 16 : }
32 :
33 27 : void NavigationController::rotateRight() {
34 27 : motor_.rotateRight();
35 27 : motorState_ = MotorState::ROTATING_RIGHT;
36 27 : }
37 :
38 25 : void NavigationController::rotateLeft() {
39 25 : motor_.rotateLeft();
40 25 : motorState_ = MotorState::ROTATING_LEFT;
41 25 : }
42 :
|